package day06;

/**
 * @author: 王丹
 * @create: 2021-07-03 10:23
 **/
public class Demo07 {
    static Object object = new Object();

    public static class T1 extends Thread {
        public T1(String name) {
            super(name);
        }

        public void run() {
            synchronized (object) {
                System.out.println(this.getName());
                Thread.currentThread().suspend();
            }
        }
    }

    public static void main(String[] args) throws InterruptedException {
        T1 t1 = new T1("T1");
        t1.start();
        /**
         * 如果resume()方法操作意外地在suspend()方法前就被执行了，那么被挂起的线程可能很难有机会被继续执行了。
         * 并且，更严重的是：它所占用的锁不会被释放，因此可能会导致整个系统工作不正常。
         * 而且，对于被挂起的线程，从它线程的状态上看，居然还是Runnable状态，
         * 这也会影响我们队系统当前状态的判断。
         *
         */
        Thread.sleep(1000);
        T1 t2 = new T1("T2");
        t2.start();
        t1.resume();
        t2.resume();
        t1.join();
        t2.join();
    }
}
